package Utilities;

import java.io.Serializable;

/*
 * Carga.java
 * Realizado por: Paulo Chang        11076
 *                Oscar Castañeda    11086
 *                Francisco Martínez 11096
 * Creado el 20 de agosto del 2011
 * Modificado por última vez el 16 de septiembre del 2011.
 * Esta clase representa a una carga perteneciente a cierto dueño, la cual puede
 * almacenarse dentro de un contenedor para su transporte de un puerto a otro.
 */

/**
 *Clase Carga
 * @author francisco
 */

public class Carga implements Serializable{
    
    /*--------------------------------------------------------------------------
     * Atributos
     */
    private String nombre;//Nombre de la carga
    private String descripcion; //Descripción de la carga
    private String owner; //Dueño de la carga
    private float  peso; //Peso, en toneladas métricas, de la carga.
    private Puerto origen, destino; //Puertos del cual parte y a donde se dirige la carga  
    private boolean consolidado; //Indica si la carga ha sido consolidada o no.

    /*--------------------------------------------------------------------------
     * Métodos
     */
    
    /**
     * Constructor: Permite crear una nueva carga cono los parámetros ingresados
     * como atributos. Dicha carga no se encuentra consolidada.
     * @param nombre1 Nombre que recibirá la carga
     * @param destino1 Puerto al cual está dirigido la carga.
     * @param origen1 Puerto en el cual se crea la carga y del cual parte.
     * @param peso1 Peso, en toneladas métricas, de la carga.
     * @param owner1 Dueño de la carga.
     * @param descripcion1 Breve descripción de la carga.
     */
    public Carga(String nombre1,Puerto destino1,Puerto origen1, float peso1,
        String owner1, String descripcion1){
        nombre=nombre1;
        destino=destino1;
        origen=origen1;
        peso=peso1;
        owner=owner1;
        descripcion=descripcion1;
        consolidado=false;
    }

    /**
     * toString
     * Devuelve la información de la carga en un String.
     * @return mensaje String que contiene el nombre, descripción, dueño, peso y
     * puertos de origen y de destino de la carga.
     */
    @Override
    public String toString(){
        String mensaje="\n\" "+nombre+" \"\n";
        mensaje+=descripcion;
        mensaje+="\nDueño: "+owner;
        mensaje+="\nPeso: "+peso+" toneladas";
        mensaje+="\nPuerto Origen: "+ origen.getNombre()+", "+origen.getPais();
        mensaje+="\nPuerto Destino: "+ destino.getNombre()+", "+destino.getPais();
        return mensaje;
    }

    /**
     * getNombre
     * Devuelve el atributo nombre de la carga.
     * @return nombre String con el nombre de la carga.
     */
    public String getNombre() {
        return nombre;
    }

   /**
     * getDestino
     * Devuelve el puerto al cual se dirige la carga.
     * @return destino Instancia de la clase Puerto al cual esta destinado la carga.
     */
   public Puerto getDestino() {
        return destino;
    }

   /**
    * getPeso
    * Devuelve el atributo peso de la carga.
    * @return peso Float que son las toneladas métricas que pesa la carga.
    */
    public float getPeso() {
        return peso;
    }

   /**
    * consolidar
    * Permite cambiar el valor de consolidado de falso a verdadero, puesto que
     * la carga ha sido consolidada.
    */
   public void consolidar(){
        consolidado=true;
    }

   /**
    * isConsolidado
    * Devuelve el valor del atributo consolidado, el cual permite saber si la
    * carga ha sido consolidada o no.
    * @return consolidado Boolean. True si la carga se encuentra consolidada. False si no
    * lo está.
    */
    public boolean isConsolidado() {
        return consolidado;
    }

    /**
     * getOwner
     * Devuelve el atributo owner.
     * @return owner String con el nombre del dueño de la carga
     */
    public String getOwner() {
        return owner;
    }
    
}
